function person(a, b, c, d) {
    return {
        name: this.name,
        a: a, b: b, c: c, d: d
    }
}

var egg = { name: '蛋老师' }

Function.prototype.newApply = function (obj,arr) {
    var result
    obj.p = this
    if (!arr) {
        result = obj.p()
    } else {
        var newArguments = []
        for (var i = 0; i < arr.length; i++) {
            newArguments.push('arr[' + i + ']')
        }
        result = eval('obj.p(' + newArguments + ')')
    }

    delete obj.p
    return result
}

var bibi = person.newApply(egg, ['点赞', '收藏', '转发', '充电'])
console.log(bibi)